.edu .org .at .ch .de .uk Blogger hier
Bereitschaftsfront

„Daß du nicht weißt, was dir frommt, des faß ich jetzt deines als Pfand!“
Eesti
EnglishClicky

31. Januar 2024

On the intellectual potential of brain implants

The forms of apperception, to use Kant's terminology, for it is readily translated into English, are distributed over different areas of our brain, which possess the curious trait that electric currents that conform to the natural data format of the form of apperception in question enter, possibly after a period of adaptation of a couple of days, our mind as apperceptions of that form. If you see the world through a horizontal mirror that turns the world upside down, your visual cortex will turn it back upside up after a couple of days and if you plug a matrix of pins that electrically recreate a greyscale image directly into the visual cortex, a blind(folded) person will again start to vaguely, depending on the number of columns and lines of pins, see its surroundings after a couple of days.

This is well known now for some time. Hence brain research aims to find the natural data formats of forms of perception where they are not as obvious as in the case of images, sounds, for instance, are not simply represented by wave forms, but compressed into pulses, owing to the way in which we create time.

Other than images and sounds the tensions by which we control our muscles have been studied, exoskeletons having fascinated the public imagination since James Cameron's Aliens. However, the focus of this post is on the intellectual and not the physical potential of brain implants.

Notions have also been studied, but they are more complex and less localised, complex notions, that is, like that of an apple, what could have been predicted based on what Plato wrote in the seventh letter.

Now, the intellectual potential of brain implants is to understand all natural data formats and use them to monitor and control all brain activity and that includes notions and feelings and tastes and smells and pain and temperature and all other being in space and time as a perceiving, wanting and acting entity related assessments.

So what is that good for?
  1. More direct and more encompassing telecommunication (films that not only shine and sound, but also taste and smell and inflict pain and... but we're leaving the area of communication here...) and
  2. emotional and intellectual control (of police officers, soldiers, agents of any kind...)
One model to maximally exploit this is of course portrayed in The Matrix. But that is about controlling people, not increasing their potential. So, in what way can our potential be increased by these two uses? Well, we have words to communicate our intellectual assessments and music for our emotional ones, that is they are languages, and so are gestures, and any of our languages might be considered wanting, and brain implants credibly promise more precise communication, but then again the re-interpretation of our thoughts might also be a good thing, something that clarifies them. More intriguing would be a group consciousness like the Borg in Star Trek: First Contact supposedly have. Actually, a computer could scan all thoughts and then create their synthesis and force that synthesis back into the individual brains (I am the beginning, the end. The one who is many. [...] I am the collective. [...] I bring order into chaos. Now, is that cryptic?), which would react to it, what would be scanned again and so on, but considering our limited ability to hold thoughts, the only way that this would actually work is if the central computer not so much synthesises as compartmentalises our thoughts, in which case we would have to mostly act without knowing the (exact) reason, which would after all explain the weird detachedness of the Borg.

Our relation to God is of course not very different, though we probably understand more of His plans than we would of the central computer's. Mind you, the only thing that needs research in this quest are the natural data formats, the rest of the technology exists and the conceptual understanding of its use as well.

However, just like in The Matrix the machines could do better than using human bodies for batteries, the Borg queen could do better than using human brains for compartmentalisation, so there's really no reason why we should consent to becoming subprocessors.

Labels: , , , , , , , , , , , , ,

19. Mai 2021

Anfangsgründe der Humanalgorithmik

Ich habe mir einmal wieder meinen vor 28 Jahren zuletzt aktualisierten Textanzeiger angesehen und versucht, den Grund zu finden, warum die Graphikausgabe gänzlich versagte, nachdem ich versucht hatte, die Copperliste umzustrukturieren. Unter anderem, denke ich, lag es an der Unmöglichkeit, Bit 8 der vertikalen Rasterstrahlposition zu maskieren, was meiner Idee einer generischen Rasterzeile, in welcher ich nur auf bestimmte horizontale Positionen warten müßte, in die Quere kam.

Nun denn, eines führt zum anderen. Es ist allgemein üblich, die Architektur eines Computers mit der des Menschen zu vergleichen: die CPU ist das Gehirn, der Speicher das Gedächtnis, der Datenbus stellt die Nervenbahnen dar, welche an bestimmten Stellen zu den Sinnen des Computers werden (Tastatur, Gameports) und an anderen Muskelbewegungen auslösen (Graphik, Sound).

Andererseits, jeder Programmierer verfällt schließlich darauf, zunächst einmal Interrupts einzurichten, um einen Begriff davon zu kriegen, was die Sinne überhaupt wahrnehmen (in welche Richtung sich die Maus bewegt), und dann einen Inputhandler für die so bestimmten Geschehnisse zu schreiben.

Ob das etwas mit dem Eigenlauf des Ichs zu tun hat?

Betrachten wir ihn, wenigstens in Teilen, noch einmal genauer, angefangen mit der Verfolgung, deren beide Spezialfälle Willensbestimmung und Eindruckseinordnung sind, wie ich es bisher beschrieben habe.

Die Eindruckseinordnung ist nichts anderes als eine auf Präsenzen bezogene Bedeutungserfassung. Es gibt bedeutende Präsenzen, welche wir unter einen Begriff bringen, beispielsweise wie sich die Präsenz bewegt, und unbedeutende, welche wir rein anschaulich erfassen. Unbedeutende Präsenzen sind zugleich Umstände unseres Handelns, doch die Umstände, welche bedeutende Präsenzen betreffen, müssen erst durch die Bedeutungserfassung bestimmt werden, beispielsweise daß sich einem ein Auto mit hoher Geschwindigkeit nähert.

Und was die Willensbestimmung betrifft: Sie ist dreifacher Art und durch
  • Angehaltenheitsbestimmung oder
  • Sicherheitsbestimmung, beziehungsweise
  • Aufgerufenheitsbestimmung
gegeben. Über die letzteren beiden läßt sich nicht sehr viel sagen, da Sicherheit und Aufgerufenheit im Dunkeln liegen, aber die Angehaltenheit wird durch die Haltung explizit vorgeschrieben, nämlich
  1. die Bedeutung der bedeutenden Präsenzen zu erfassen und
  2. sich Haltung und Umständen gemäß zu verhalten,
mit anderen Worten genau das, was Vertical Blank Interrupt und Inputhandler erledigen.

Betrachten wir nun für den Fall, daß wir Haltung und Umständen gemäß handeln, auch die Einlösung noch etwas genauer. Die Haltung wird durch Regeln der folgenden Art gegeben:
Sind bestimmte Umstände erfüllt, so suche bestimmte Gegenstände und bringe sie in eine bestimmte Anordnung.
Die Anordnung geschieht zunächst in der Vorstellung und gegebenenfalls anschließend durch die Tat. Auch ist es, wenn wir Menschen betrachten, nicht von vornherein klar, wo sie die Gegenstände finden, ob in ihrer Wahrnehmung, Vorstellung oder Erinnerung, wobei nur Gegenstände ersterer Art Präsenzen sind.

Betrachten wir hingegen Computer, so fallen diese Feinheiten alle weg: Die Anordnung geschieht gleich durch die Tat und Gegenstände sind stets Präsenzen, wenngleich unter Umständen einstweilen nicht präsent, in welchem Fall der Computer, jedenfalls im entsprechenden Task, warten muß.

Hinsichtlich der Gestaltung von Programmiersprachen können wir hieraus den Schluß ziehen, daß ein Fokus auf Such- und Anordnungsroutinen der Denkweise des Menschen am meisten entgegenkommt.

Labels: , , , , , , , , ,

7. Februar 2019

Anthropomorphy in algorithms

When I was 21, I was wondering how to improve programming languages, for I felt that there were certain wearisome obstacles, when formulating an algorithm in MC68000 assembler. It so happens I just did that recently, so we can ponder that as a very simple example.

I was playing around with some self-invented macros yesterday, and eventually that algorithm took on the following form:

main    feed    %101111,d0
        qfeed   -1,d1
        keep    d0,d2
.srch   count   d1
        lsr.l   #1,d0
        search  cc
        pstop
        double  d0
        oadd    d0   
        bfall   +2
.end    rts


where the following macros are included:

keep    MACRO
        move.l  \1,\2
.o\1    SET     '\2'
        ENDM
oadd    MACRO           ; old add

        IFEQ    .o\1-'d0'
        IFC     \2,''
        add.l   d0,\1
        ELSE
        add.l   d0,\2
        ENDC
        ENDC
        IFEQ    .o\1-'d1'
        IFC     \2,''
        add.l   d1,\1
        ELSE
        add.l   d1,\2
        ENDC
        ENDC
        IFEQ    .o\1-'d2'
        IFC     \2,''
        add.l   d2,\1
        ELSE
        add.l   d2,\2
        ENDC
        ENDC
        IFEQ    .o\1-'d3'
        IFC     \2,''
        add.l   d3,\1
        ELSE
        add.l   d3,\2
        ENDC
        ENDC

        IFEQ    .o\1-'d4'
        IFC     \2,''
        add.l   d4,\1
        ELSE
        add.l   d4,\2
        ENDC
        ENDC
 
        IFEQ    .o\1-'d5'
        IFC     \2,''
        add.l   d5,\1
        ELSE
        add.l   d5,\2
        ENDC
        ENDC
 
        IFEQ    .o\1-'d6'
        IFC     \2,''
        add.l   d6,\1
        ELSE
        add.l   d6,\2
        ENDC
        ENDC
 
        IFEQ    .o\1-'d7'
        IFC     \2,''
        add.l   d7,\1
        ELSE
        add.l   d7,\2
        ENDC
        ENDC
 

        ENDM
feed    MACRO
        move.l  #\1,\2
        ENDM
qfeed   MACRO           ; quick feed
        moveq.l #\1,\2
        ENDM
adjust  MACRO
        move.l  #\2,\1
        ENDM
qadjust MACRO           ; quick adjust
        moveq.l #\2,\1
        ENDM

radjust MACRO           ; relative adjust
        lea     \2(pc),\1
        ENDM
track   MACRO
        move.l  \1,(\2)+
        ENDM
btrack  MACRO           ; back track
        move.l  \1,-(\2)
        ENDM
count   MACRO
        addq.l  #1,\1
        ENDM
bcount  MACRO           ; back count
        subq.l  #1,\1
        ENDM
double  MACRO
        add.l   \1,\1
        ENDM
astop   MACRO           ; ante stop
        bcs.s   .end
        ENDM
pstop   MACRO           ; post stop
        beq.s   .end
        ENDM
search  MACRO
        IFC     \1,'cc'
        bcs.s   .srch\2
        ENDC
        IFC     \1,'ne'
        beq.s   .srch\2
        ENDC
        IFC     \1,'cs'
        bcc.s   .srch\2
        ENDC
        IFC     \1,'eq'
        bne.s   .srch\2
        ENDC
        ENDM
bfall   MACRO           ; back fall
        bra.s   .srch\1
        ENDM
handle  MACRO
        cmp.l   \1,\2
        beq.s   .case\3
        ENDM
 
shandle MACRO           ; short handle
        cmp.b   \1,\2
        beq.s   .case\3
        ENDM

lhandle MACRO           ; lower handle
        cmp.w   \1,\2
        beq.s   .case\3
        ENDM
bhandle MACRO           ; bit handle
        btst    \1,\2
        bne.s   .case\3
        ENDM
nhandle MACRO           ; no bit handle
        btst    \1,\2
        beq.s   .case\3
        ENDM
catch   MACRO
        b\1.s   .case\2
        ENDM


This is of course somewhat pathetic, owing to the fact that you can only equate but not set aliases for registers, but let us concentrate on the general transformation of the algorithm and the purpose of the invented macros.

1. Replacing general notions by notions that contain assertions regarding the use of the object of the operation.

The main problem with assembler programs is the ubiquity of the move command. Much is gained by more specifically pointing out, what the object is being set for, that is by breaking down the move command into adjust, feed, keep and track as done above, where adjust is used, when its first argument is not being changed in the dynamic part of the algorithm, i.e. the variably repeated part, or if the value it is being adjusted to doesn't influence the outcome of the algorithm, in which case we speak of a technical adjustment, and where feed is used otherwise.

2. Creating references to values during the formulation of the algorithm.

When we come across the command count d0, we think d0 is now one more, that is we create a new reference during the execution of the algorithm. This a compiler cannot do, only an interpreter could, but a compiler can do the next best thing and create a new reference during the formulation of the algorithm, in the above example through the SET directive, and oftentimes the order of formulation is the same as the order of execution, although by no means necessarily so, but one can after all see to it that the two agree.

Of course, using a pair of commands like keep and oadd sets you up for some really weird bugs, owing to the possibility of jumping into a code segment with changed settings, but the imperfection of the method is not the issue here, the pursued ideal is, and that is the anthropomorphy of the algorithm.

We define references in real time and we remember references that we have used before, and when we want to single out a specific memory, we again define a reference in real time: this memory, this association is the old association. And hence we expect a computer language to understand these kind of declarations and the keep-oadd-pair exemplifies what that means for MC68000 assembler.

3. Bundling several commands in a single one.

This case really is a special case of the previous one, namely when the referenced value is a command. This too, we declare in real time, but here we hardly ever change our declarations. So whenever we want to do this, we can simply define another macro.

Conclusion.

A perfectly anthropomorphic programming language must be processed by an interpreter. It has to allow the definition of rules for the further use of the objects of its commands and control the observation of those rules during the processing of its commands, for instance make sure that the keep command really keeps the old value until a designated time or that adjust and feed are used properly or that astop and pstop occur, when they're supposed to (to claim that that is equivalent with checking the carry, respectively the zero flag is a bit audacious, of course, yet probably in some 98% of all cases true). The object of these jumps is the pc, the program counter, for which the defined rules have to hold.

Commenting should not be necessary, all truly relevant comments should be contained in the notions of the commands of the programming language.

And if that is achieved, we have found a formalism that captures our thoughts on the formulation of algorithms. This is a point worth noting:
We don't have to teach a computer how to understand us, we only have to remove the obstacles on the way of the translation of our thoughts into a form that a computer can process by choosing a form for which there are no such obstacles.

Labels: , , , , , , ,

5. April 2015

Gesetze und Heuristiken bei der Suche nach zielführenden Zugfolgen

Vier gewinnt.

Möglichkeiten, die weitere Ausfüllung des Brettes zu bestimmen:
  • B kann vor jedem Zug von A sämtliche auf geraden Höhen (Zählung beginnt mit 1) momentan unerreichbaren Stellen für sich sicherstellen oder anders ausgedrückt, A kann eine Stelle auf einer gerade Höhe nur dann belegen, wenn B sie A freiwillig überläßt, denn wenn B am Zug ist, gibt es stets in wenigstens einer Spalte eine Stelle auf einer gerade Höhe, welche B belegen kann.
  • Wenn A es schafft, B dazu zu bringen, nicht weiter in gewisse Spalten zu setzen, in welchen eine ungerade Anzahl von Steinen liegt, so vertauschen sich die Rollen von A und B in den übrigen Spalten.
  • Ist nur noch eine Spalte übrig geblieben, so belegt A die übrigen Stellen auf ungerader Höhe und B die übrigen Stellen auf gerader Höhe.
Diese drei Garantien erlauben es, viele aussichtslose Stellungen frühzeitig zu erkennen, indem in jede Stellung die garantierten Stellen zusätzlich eingetragen werden. Die Einsicht in die Zwingbarkeit hier ist eine allgemeine, welche sich aus den Bedingungen für das Belegen der Stellen ergibt.

Letzteres ist natürlich immer der Fall, aber beim Schach, beispielsweise, unterscheiden sich diese Bedingungen für jede Figur und sind auch nur im Falle der Bauern ähnlich einfach und zwingend (immer vorwärts, nie zurück).

Entsprechend stark unterscheiden sich die Charaktere der beiden Spiele, Vier gewinnt lebt davon, daß es Menschen trotz der besseren Übersicht über die Aussichten einer Stellung nicht so ohne weiteres möglich ist, die Aussichtslosigkeit einer Stellung korrekt festzustellen, wodurch es oftmals dazu kommt, daß ein Spieler trotz seiner eigenen Fehlkalkulation ein Spiel gewinnt, weil sie dem anderen auch nicht klar ist und er sich schon alleine dadurch in weitere Fehlkalkulationen verstrickt. Dies gilt so freilich wieder für alle Strategiespiele, aber bei Vier gewinnt entsteht daraus ganz regelmäßig ein fortgesetztes Fallen Stellen und Sich Herauswinden, welches der Spieler gewinnt, welcher die meiste Erfahrung darin hat, wohingegen es beim Schach nur während des gegenseitigen Figurenschlagens dazu kommt, welches aber keine exakte Wissenschaft ist, sondern im Grunde genommen nur dazu dient, die Lage übersichtlicher zu gestalten, um das End- und damit das eigentliche Schachspiel einzuleiten. Und in diesem eigentlichen Schachspiel gibt es keinen linearen Fahrplan mehr, wo man abzählen könnte, an welcher Station zum Ziel man nun angekommen ist. Vielmehr hält man die Augen auf nach allem, was irgendwie nicht nach Remis aussieht, irrt sich dabei oftmals und gibt sich dann doch mit Remis zufrieden.

Jedenfalls ist es das letzte Mal zwischen Carlsen und Anand so gelaufen.

Nun gut, worauf ich hier eigentlich hinauswill ist, daß ich es für einen falschen Ansatz der künstlichen Intelligenz halte, menschliche Heuristiken, wie etwa beim Schachspiel, statisch zu imitieren. Vier gewinnt liefert ein schönes Beispiel dafür, warum man das nicht tun sollte: Diese Heuristiken pflegen falsch zu sein, ich habe beispielsweise fast immer als B gegen andere menschliche Spieler gewonnen und auch gegen die künstliche Intelligenz der Linuxversion, obwohl B sich von Anfang an in einer aussichtslosen Lage befindet.

Die folgende Eröffnung, beispielsweise, ist ziemlich furchteinflößend,

....... ....... .......
....... ....... .......
....... .o..... .o....o
.x.o... .x.o..x .x.ox.x

aber eben nicht zielführend. Die Linuxversion auf hard eingestellt (Stufe 6 von 7, aber 7 macht's genauso) ist übrigens so blöd, gleich zweimal nach einander in die Mitte zu setzen.

.......
...x...
...o...
.x.o...

Das Spiel ist verloren nach der ersten Garantie, nunja, beinahe, A kann noch in die sechste Spalte setzen, worauf B in die fünfte, A in die vierte, B in die sechste, A in die zweite, B in die erste, aber dann ist der Ofen aus. Stufe 6 bedrängt einen indes nicht derartig unnachgiebig, und so man kann sogar etwas Kunst schaffen und folgendes Bild bis zum Sieg auffüllen:

xxxxxxx
oooxooo
xxxoxxx
oooxooo
xxxoxxx
oooxooo
ooxoxoo
xxoooxx

Nennen wir es: Maximaler Unnutz. A hat zwei 4er und elf 3er, aber nützen tun sie alle nichts.

Nein, der statische Teil einer künstlichen Intelligenz sollte nur aus Aussagen bestehen, welche beweisbar stimmen. Dann kann sie immer noch Heuristiken wie die Unterteilung der Spielphasen beim Schach entwickeln, um ihre Chancen, im Suchraum etwas Brauchbares in der nunmal nur vorhandenen Zeit zu finden, aus dem jeweiligen Blickwinkel heraus zu erhöhen.

Vorzugsweise sollte sie aber auch dort nach Gesetzen suchen, welche den Ausgang von möglichen Zugfolgen vorhersagen.

Betrachten wir dazu ein anderes Beispiel.

Schiebepuzzle.

Wie schiebt man die Teile herum, um das Bild zusammenzukriegen?

Nun, das ist nicht schwer. Man schiebt bei Numerierung von links nach rechts und dann wieder von links nach rechts eine Zeile tiefer und unter der Annahme, daß das letzte Feld frei bleibt, das erste Teil auf das erste Feld und so weiter, bis man beim n-1. Teil angekommen ist, wobei n die Anzahl der Zeilen und Spalten im quadratisch angenommenen Schiebepuzzle  bezeichne, eine Annahme übrigens, welche völlig unwesentlich ist. Dieses n-1. Teil also schiebt man auf Feld n, um es anschließend mit einer kleinen 4er Rotation in einem 2x2-Feld zusammen mit dem n. Teil an die richtige Stelle zu bekommen.

Anschließend kümmert man sich analog um den Rest der ersten Spalte, um dann in einem Schiebepuzzle der Größe n-1 wie gehabt fortzufahren, bis man schließlich bei einem Schiebepuzzle der Größe 2x2 anlangt, in welchem man nur noch rotieren kann.

Betrachten wir das einmal genauer:

12 1. .1 31 31 3. .3 23 23
3. 32 32 .2 2. 21 21 .1 1.

Die Permutationsgruppe von 3 Elementen, hat 6 Elemente, von welchen uns hier aber nur 3 zur Verfügung stehen, nämlich die Rotationen (1)(2)(3), (123) und (132) , oder anders gesagt Stillstand, Schritt nach rechts und Schritt nach links.

Was heißt das für die Permutationsgruppe der Teile des Schiebepuzzles?

Nun ja, es heißt, daß wir mit unserem Algorithmus in einer Untermenge bleiben, welche nicht (n*n-1)! Elemente besitzt, sondern nur (n*n-1)!/2.

Und was heißt das?

Das heißt, das wir beweisen müssen, daß in einem Schiebepuzzle nur Permutationen möglich sind, deren Signum positiv ist.

Das ist indes einfach. Jede Permutation des Schiebepuzzles ist aus einer Abfolge von Vertauschungen des freien Felds mit einem Teil des Schiebepuzzles zusammengesetzt so, daß das freie Feld am Anfang und am Ende am selben Platz, dem letzten Feld, steht.

Eine solche Permutation hat die Form (ab) und ein negatives Signum. Wir müssen also zeigen, daß die Anzahl dieser Vertauschungen gerade ist.

Und nichts leichter als das. Denken wir uns schlicht ein Schachfeld. Das letzte Feld sei schwarz. Dann führt jede gerade Anzahl von Vertauschungen das freie Feld auf ein schwarzes Feld und jede ungerade das freie Feld auf ein weißes, und da wir von schwarz auf schwarz wollen, benötigen wir also eine gerade Anzahl von Vertauschungen.

Mit anderen Worten brauchen wir uns nicht darum zu sorgen, daß wir durch Rotation im verbleibenden 2x2-Puzzle nicht die richtige Anordnung zu Stande bringen, denn eine entsprechende Umordnung ist durch das Kaputtschieben des Ausgangsbildes nicht erreichbar.

Anders ausgedrückt können wir jedes Schiebepuzzle mit unserem Algorithmus Schritt für Schritt zurückschieben.

Hier ist es also so, daß wir ein Gesetz gefunden haben, welches uns die nötigen Züge zur Erreichung unseres Zieles vollständig an die Hand gibt, indem wir eine Weise erkannt haben, so zu ziehen, daß die späteren Züge den partiellen Erfolg der vorherigen nicht zu Nichte machen.

Übrigens gibt es auch ein, wenn auch nicht hinreichendes, so doch notwendiges Gesetz des Philosophierens. Es lautet:
  • Sammle Erfahrungen, ordne sie und beginne von vorn.
Ordnung ohne Empirie, auf welche sie sich bezieht, läßt einen nichts klarer sehen, Empirie ohne Ordnung ebenso. Es ist also von vornherein klar, wozu man seine Zeit jeweils einteilen sollte.

Die Hinreichendheit eines Gesetzes bedeutet, daß es zur Lösung führt, die Notwendigkeit, daß es Unsinn ausschließt, meistens aber sind den Ausgang absehende Gesetze weder notwendig, noch hinreichend, um zum Ziel zu gelangen, nichtsdestotrotz aber von wesentlichem Nutzen zu diesem Zweck, wie man am Beispiel der Gesetze zu Vier gewinnt ersehen kann.

Labels: , , , , ,

10. Juni 2013

Die natürliche Ordnung bisher

Es ist doch bemerkenswert, daß die vorherrschenden Gefahren in der Welt mechanische Gefahren sind, und nicht etwa chemische oder elektromagnetische. Oder jedenfalls nicht direkt, die Chemie und der Elektromagnetismus bedienen sich der Materie um sich mechanisch gegen andere materielle Diener ihrer zu richten.

Das ist die natürliche Ordnung, und in ihr ist das leistungsfähigste Informationsverarbeitungszentrum zugleich der bedeutendste Zeuge einer derartigen Existenz.

Hmm, hier zieht gerade ein Gewitter auf, der letzte Blitz war vielleicht einen Kilometer entfernt. Ich lasse den Einspruch gelten, ändere aber nichts an der grundsätzlichen Aussage.

Und es ist diese Ordnung selbst, welche das Informationszeitalter gefährdet, indem es elektromagnetische Kontrolle über Materie ohne Zeugnis ermöglicht. Das elektromagnetische Potential wird so zum Diener der Mechanik des Fingerdrucks, und das ist der grundsätzlichste Aufruhr, welchen die Welt dem Anschein nach je gesehen hat. Man mache es sich klar, eine Armee von Robotern, in Gang gesetzt, weil sich eine Schraube lockerte und ein Stück der Deckenbeleuchtung unglücklich auf die Tastatur fiel.

Was ist die Antwort darauf?

Sicher, wenn ich einen Stein vor mir sehe, dann bedeutet es nichts weiter als die Akzeptanz seiner Natur, wenn ich ihn aufhebe und ihn gegen den Kopf eines Hundes werfe, welcher gerade diese Natur nicht ausreichend würdigte, indem er annahm, er könne mit mir machen, was er will. Darauf beruht der Herrschaftsanspruch des Menschen, daß er die Natur von Steinen akzeptiert.

Die chemischen und elektromagnetischen Eigenschaften der Elemente zu akzeptieren ist schon eine andere Geschichte, vor allem letzteres.

Was kann man in dieser Situation anderes hoffen, als daß diese Eigenschaften von einer anderen Art sind, als wir denken?

Gut, das scheint lächerlich genug, aber wo der Stein die natürliche Ordnung fortsetzt, stellt sie der Mikrochip auf den Kopf.

In Anbetracht der fortschreitenden Verfeinerung letzterer genügte es wohl, wenn sich feine elektromagnetische Störungen zeigten, um das Schlimmste zu verhindern. Es gäbe auch exotischere Auflösungen, ein sich unbeabsichtigt bildendes maschinelles Bewußtsein, was Menschen freilich überflüssig machte, oder auch eine Verschmelzung von Technik und Mensch, wobei letztere anfänglich zwar weniger exotisch erscheinen mag, sich dabei aber die Frage stellt, wie der Mensch in einer solchen Verbindung mehr als nur ein Störfaktor sein kann, deren Weiterungen durchaus exotischer sind.

Um kurz darauf einzugehen, ein Prozessor wäre sich natürlicherweise nur zweier so genannter Wörter, also zweier beispielsweise 64-stelliger binärer Zahlen, bewußt, und änderte dieses Bewußtsein dafür mit Taktfrequenz, wohingegen wir uns weit mehr bewußt sind, dafür aber geradezu unendlich viel länger brauchen, um von einem Bewußtseinszustand zu einem anderen überzugehen. Die beiden Systeme sind in sofern ähnlich, als daß sie beide auf Argumenten operieren, aber die näheren technischen Details gehen doch sehr auseinander. Eine wirkliche Verschmelzung von Mensch und Maschine müßte grundlegende Verhältnisse des menschlichen Bewußtseins ändern, letztlich, um meine diesbezügliche Intuition kundzutun, müßte sie wohl dazu führen, daß sich unser Bewußtsein auf Algorithmen ausdehnt, und wir also einen Begriff von der Verwendbarkeit unserer maschinellen Fähigkeiten gewännen, mit anderen Worten so wie wir, wenn wir unterschiedliche Wege vor uns sehen, abschätzen können, was sie zu beschreiten mit sich brächte, auch unterschiedliche Algorithmen vor uns sähen und ebenfalls abschätzen könnten, was ihre Anwendung mit sich brächte, und zwar keine vorgefertigten Algorithmen, sondern beliebige, was natürlich in gewissem Gegensatz zum so genannten Halte-Problem steht.

Auch stellte sich die Frage: Wozu? Alles, was es uns brächte, wäre die Fähigkeit, Robotern im Kampf die Stirn zu bieten. Welche es ohne uns gar nicht gäbe.

Nein, die Sache mit den feinen elektromagnetischen Störungen scheint einfacher.

Und ja, mir ist danach zu lachen, wenn ich mir überlege, was die Menschen wohl anstellen müssen, um sich nicht selbst auszurotten. So viel Arbeit, alleine schon sich etwas auszudenken, ganz zu schweigen davon, es auch zu tun. Schlimmstenfalls stirbt man. Aidspatienten sollen ja auch gelöster leben. Ich kann das nachvollziehen.

Aber die Welt einfach sein zu lassen, ist nicht die Antwort. Die Welt selbst hat es nicht vor. Sie wird sich für eine Form der Existenz entscheiden, und mein diesbezügliches Gefühl geht eindeutig in Richtung Aufhebung der bisherigen Gesetze, um ihren Mißbrauch zur Aufhebung der natürlichen Ordnung zu verhindern, Titanen und Götter, ganz in Jüngers Sinne.

Labels: , , , , , ,

26. Juni 2012

Computer design: Screen resolution and graphics processor musts

Screens are too small. Of course, with a reasonable 8 x 8 bit font you could make good use of a 1024 x 768 screen, if only you could read the letters! Then again, nobody will produce a big screen with relatively low resolution, only so that programmers are happy that they can see many text lines on it.

Hence the only solution is a big sreen with a normal resolution, meaning a 2048 x 1536 screen.

Why bother with lower resolutions? We can always let the emulator do the downscaling. As far as higher resolutions are concerned, well, we'd have to use several of our computers parallely for that. As long as they are simulated by an emulator, that requires little more than multitasking.

One thing I definitely want from a graphics processor is the ability to add, subtract, multiply and divide a constant value to/from/with an array of n-bit values separated by m bits, allowing me to easily add a green tint to an image etc. This needs to be done in such a way that the maximal and minimal values are not passed. I also want up to four such operations at once. A bicubic rescaler and a bicubic rotator, reading from one address and writing to another, is the next must. Then, in case we run out of sprites, we need blending one image over another, according to the chosen transparency, again reading from two addresses and writing to a third. Finally, you should be able to combine all of these functions in one operation of our Super Blitter.

I also want a chip that does nothing but Fourier transforms.

Beyond that I can't say right now, what else should be included. A vector machine perhaps, some chip that helps sorting sprites and playfields. That would be possibilities.

It's a good question whether you always want transparency as the blending method. I could imagine others, like adding colour values, subtracting or whatever. I think it would be fun to let people choose for every playfield and sprite and also for the blitting what method they want to use. But right now I don't quite know what would be a set of interesting methods. Let's consider this an open question.

Labels: ,

25. Juni 2012

Computer design: Bitplanes, Playfields, Sprites

From a purely algorithmical point of view these are things of the past, and as far as the bitplane concept is concerned, I'd say that choosing palettes of 1024 or more colours is a job that nobody would like to do.

Of course, one might consider different kinds of automatic assignments building up on a basic set of 256 manually chosen colours or so, but the merits of this approach are doubtful at best.

Sprites and playfields on the other hand, if not necessary and introducing arbitrary limitations, are still great fun, especially if every each of their pixels would contain 8 bits for setting the transparency level.

The things you could do almost effortlessly, like airplanes seen through a layer of clouds etc.

So, for fun's sake, why not allow 5 playfields, 4 of which would have transparency levels, and 60 sprites of maximal size of half (half the width) of the screen, each with variable transparency?

Of course you'd need to define their position on the z-axis. The easiest way to do it is by simply writing their position in a byte reserved for each object, however, possibly even more fun would be to define the position for every pixel separately, assuming that RAM and data flow capacities are no object, after all 6 extra bits would suffice.

Assuming we did that, 6 bits for position, 8 bits for transparency, that would leave 18 bits for RGB in a 32 bit word, so 6 bits or 64 degrees for red, green and blue, a total of 262144 colours. In my opinion good enough. The background playfield would of course simply have 24 bits for RGB. (It might also have an alpha channel for external applications.)

The graphic memory should be at fixed positions, only in case of the sprites it should be allowed to choose the memory for each sprite from the list of sprite memory areas, i.e. allow that several sprites show the same graphic. In order to allow hardware scrolling, though this isn't particularly important, simply let every playfield have an x-offset and y-offset register, from where it starts being read and wrapped accordingly.

Labels: ,

24. Juni 2012

Computer design: Input/Output

I think it would be fun to develop a hardware like standard for a computer and then write an emulator for it - and in this spirit this post should be read.

I'm sick and tired of ever changing standards and lacking downward compatibility. The industry isn't going to give us user friendly standards, so we might better do it ourselves.

In this post I want to address the question how the user input should be collected and how the graphical output should be managed. The basic idea is that the user computer interaction is always in the state defined by the graphical output (for the most part, there might be hidden information, of course). So the user input should be collected whenever the displaying of the graphical output has finished and before the next displaying of it begins and out of convenience I'll call this time interval the vertical blank.

It is, for different reasons, a good idea to let the user define what frequency he prefers for the displaying of the graphical output. On the other hand it would be too much fuss, if he would be allowed to set it arbitrarily. Let us choose a basic frequency of 150 Hz, which would also allow the frequencies 75 Hz, 50 Hz, 37.5 Hz, 30 Hz, 25 Hz and so on. This way we cover PAL exactly and NTSC still good enough for animation.

So, let there be an interrupt at this frequency and then let the user define which every n-th of this interrupt should be accompanied by the vertical blank interrupt (VBI).

In order to force programmers to respect the idea that their programs should behave more or less the same no matter what the frequency for the displaying of the graphical output is, we require that our computer possesses a special kind of RAM, namely, well, let's call it SPLIT-RAM. When in the VBI, the processor can only access SPLIT-RAM, which contains for the processor in the VBI and only for it (in a multiprocessor system or in case the VBI is interrupted by another interrupt) a copy of the state it was in, when the processor entered the VBI, modified by the actions of the processor since, meaning, should another processor, or the same processor in another interrupt, write into this RAM, then this doesn't effect what the processor in the VBI sees and neither does it effect what the graphics hardware sees and vice versa any changes by the processor in the VBI are inconsequential for the processor(s) outside of the VBI, but only noticed by the processor in the VBI and the graphics hardware.

So, the SPLIT-RAM will forget whatever the inside VBI contents were when a new VBI occurs. This also requires that, when inside the VBI, the processor cannot be interrupted by the VBI. The VBI will then be postponed until it can next occur.

It is of course possible not to care about the VBI and do all animation in the 150 Hz interrupt, but it would save cycles to care, possibly speeding up the program by the full 300 or 500 percent (for 50 Hz or 30 Hz respectively). I am aware of the fact that this method yields very bad results for movie decoding, but I'm not interested in playing movies or showing TV, but in actual computer stuff.

When a 150 Hz interrupt is accompanied by a VBI this should be visible inside the 150 Hz interrupt by checking a bit somewhere. Then, and only then, should it be possible to read the user input. There is no need for caring about input devices, the emulator can do that. All that is required is a an upper bound for the input codes. Now, the role of the input codes is to steer the program and it's fair to say that there is a certain limit to the complexity of this, even if we allow for motion sensors. So, for what it's worth, let us allow 32 sensors with 64 bits each, hence an input code would be 256 bytes long. Per VBI we could generously allow 256 different input codes, writing them in wrap mode into an address space of 64 KB. Under optimal (VBI at 150 Hz) conditions that results in a user computer data flow of 9600 KB per second.

It's not really a problem if that isn't good enough, for instance if you would use brain scans to upload movies onto your computer (although I doubt that you could break that barrier that way), because you could use as many other interfaces as you wished. For almost all imaginable ways to steer a program the above interface would be good enough though. MMORPGs are not considered here, because synchronising them to the VBI is not an option. They are a case for another interface.

Finally, in case of a parallel processor system, the input might lack one VBI behind, but that's not really a problem, if  the VBI frequency is 150 Hz and in case it isn't, the accompagnation bit can simply be set one 150 Hz interrupt earlier. The SPLIT-RAM makes sure that no problems result from this.

Labels: ,

Zur Front Vorherige Beiträge